<?php

if (!defined('ADODB_DIR'))
    die();
include(ADODB_DIR . "/drivers/adodb-db2.inc.php");


if (!defined('ADODB_DB2OCI')) {
    define('ADODB_DB2OCI', 1);

    function _colontrack($p) {
        global $_COLONARR, $_COLONSZ;
        $v = (integer) substr($p, 1);
        if ($v > $_COLONSZ)
            return $p;
        $_COLONARR[] = $v;
        return '?';
    }

    function _colonscope($sql, $arr) {
        global $_COLONARR, $_COLONSZ;

        $_COLONARR = array();
        $_COLONSZ = sizeof($arr);

        $sql2 = preg_replace("/(:[0-9]+)/e", "_colontrack('\\1')", $sql);

        if (empty($_COLONARR))
            return array($sql, $arr);

        foreach ($_COLONARR as $k => $v) {
            $arr2[] = $arr[$v];
        }

        return array($sql2, $arr2);
    }

    class ADODB_db2oci extends ADODB_db2 {

        var $databaseType = "db2oci";
        var $sysTimeStamp = 'sysdate';
        var $sysDate = 'trunc(sysdate)';

        function ADODB_db2oci() {
            $this->ADODB_db2();
        }

        function _Execute($sql, $inputarr) {
            if ($inputarr)
                list($sql, $inputarr) = _colonscope($sql, $inputarr);
            return parent::_Execute($sql, $inputarr);
        }

    }

    ;

    class ADORecordSet_db2oci extends ADORecordSet_odbc {

        var $databaseType = "db2oci";

        function ADORecordSet_db2oci($id, $mode = false) {
            return $this->ADORecordSet_db2($id, $mode);
        }

    }

}
?>